package com.durian.financial.api.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.durian.common.core.annotation.Excel;
import com.durian.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 租房合同对象 t_cf_contract
 * 
 * @author durian
 * @date 2022-06-27
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
public class CfContract extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private Long id;

    /** 出房合同编号（系统生成） */
    @Excel(name = "出房合同编号", readConverterExp = "系=统生成")
    private String cfContractNo;

    /** 外部合同编号（线下合同编号） */
    @Excel(name = "外部合同编号", readConverterExp = "线=下合同编号")
    private String outContractNo;

    /** 上一合同ID，续约合同的时候 */
    @Excel(name = "上一合同ID，续约合同的时候")
    private Long lastContractId;

    /** 上一合同编号 */
    @Excel(name = "上一合同编号")
    private String lastContractNo;

    /** 商户ID */
    @Excel(name = "商户ID")
    private Long businessId;

    /** 部门ID */
    @Excel(name = "部门ID")
    private Long deptId;

    /** 部门编号 */
    @Excel(name = "部门编号")
    private String deptNo;

    /** 房源ID */
    @Excel(name = "房源ID")
    private String roomId;

    /** 房源编号 */
    @Excel(name = "房源编号")
    private String roomCode;

    /** 承租房间(使用房源名称) */
    @Excel(name = "承租房间(使用房源名称)")
    private String roomName;

    /** 收房合同ID（没有收房合同可以录入出房合同） */
    @Excel(name = "收房合同ID", readConverterExp = "没=有收房合同可以录入出房合同")
    private Long sfContractId;

    /** 收房合同编号（没有收房合同可以录入出房合同） */
    @Excel(name = "收房合同编号", readConverterExp = "没=有收房合同可以录入出房合同")
    private String sfContractNo;

    /** 房产编号 */
    @Excel(name = "房产编号")
    private String houseId;

    /** 房产信息(考虑在房产表中增加house_name，楼栋，单元，门牌号和居室，然后带出) */
    @Excel(name = "房产信息(考虑在房产表中增加house_name，楼栋，单元，门牌号和居室，然后带出)")
    private String houseName;

    /** 小区名(使用楼盘名称) */
    @Excel(name = "小区名(使用楼盘名称)")
    private String premiseName;

    /** 居住人数(出房的时候录入) */
    @Excel(name = "居住人数(出房的时候录入)")
    private Long peopleNum;

    /** 租客ID */
    @Excel(name = "租客ID")
    private Long tenantId;

    /** 租客姓名 */
    @Excel(name = "租客姓名")
    private String tenantName;

    /** 租客手机号 */
    @Excel(name = "租客手机号")
    private String tenantPhone;

    /** 租客紧急联系号 */
    @Excel(name = "租客紧急联系号")
    private String tenantEmergencyPhone;

    /** 租客证件号 */
    @Excel(name = "租客证件号")
    private String tenantCardNo;

    /** 租客联系地址 */
    @Excel(name = "租客联系地址")
    private String tenantContactAddress;

    /** 租约期限开始日 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "租约期限开始日", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 租约期限结束日 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "租约期限结束日", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /** 租约期限（月）,直接选择租约期限的时候，没有选，暂时不设定 */
    @Excel(name = "租约期限", readConverterExp = "月=")
    private Date signingCycle;

    /** 承租月租金 */
    @Excel(name = "承租月租金")
    private BigDecimal monthRent;

    /** 押金 */
    @Excel(name = "押金")
    private BigDecimal deposit;

    /** 收款方式(押X付Y的X) */
    @Excel(name = "收款方式(押X付Y的X)")
    private Integer depositType;

    /** 收款方式（押X付Y的Y） */
    @Excel(name = "收款方式", readConverterExp = "押=X付Y的Y")
    private Integer paymentType;

    /** 房租收取设置提前天数,天 */
    @Excel(name = "房租收取设置提前天数,天")
    private Long advanceDays;

    /** 房租收取设置固定日, 号（自然月） */
    @Excel(name = "房租收取设置固定日, 号", readConverterExp = "自=然月")
    private Long fixedDay;

    /** 租客承担付费(款项),各款项逗号拼接保存 */
    @Excel(name = "租客承担付费(款项),各款项逗号拼接保存")
    private String tenantExpenses;

    /**
        承租类型,"0:整租（分散式）
        1:合租（分散式）
        2:单身公寓（集中式）
     */
    private Integer signType;

    /** 补充条款 */
    @Excel(name = "补充条款")
    private String supplementaryTerms;

    /** 有无特殊人群,0:无 1:有 */
    @Excel(name = "有无特殊人群,0:无 1:有")
    private Integer haveSpecialPeople;

    /** 是否房租分期,0:否 1:是 */
    @Excel(name = "是否房租分期,0:否 1:是")
    private Integer rentInstallmentFlg;

    /** 是否租约保理,0:否 1:是 */
    @Excel(name = "是否租约保理,0:否 1:是")
    private Integer zyblFlg;

    /**
        合同状态
        1:草稿
        2:已提交
        3:已解约
        4:已结束
        9:作废"
     */
    private Integer contractState;

    /**
        续约状态,
        0: 未续约
        1: 已续约
     */
    private Integer xuyueState;

    /** 冻结状态：0未冻结 1已冻结 */
    @Excel(name = "冻结状态：0未冻结 1已冻结")
    private Integer freezeStatus;

    /** 合同录入日期,暂定设置为提交日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date inputDate;

    /** 合同签订日期, 暂定设置为提交日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date signingDate;

    /** 合同审核日期,暂定设置为提交日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "合同审核日期,暂定设置为提交日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date auditDate;

    /** 合同录入人,暂定设置为创建人 */
    @Excel(name = "合同录入人,暂定设置为创建人")
    private Long inputUserId;

    /** 出房人,暂定设置为创建人 */
    @Excel(name = "出房人,暂定设置为创建人")
    private Long cfUserId;

    /** 出房人姓名 */
    @Excel(name = "出房人姓名")
    private String cfUserName;

    /** 预留字段1 */
    @Excel(name = "预留字段1")
    private BigDecimal reserve1;

    /** 预留字段2 */
    @Excel(name = "预留字段2")
    private Long reserve2;

    /** 预留字段3 */
    @Excel(name = "预留字段3")
    private String reserve3;

    /** 预留字段4 */
    @Excel(name = "预留字段4")
    private String reserve4;

    /** 预留字段5 */
    @Excel(name = "预留字段5")
    private String reserve5;

    /** 删除标识,0:未删除，1:删除 */
    @Excel(name = "删除标识,0:未删除，1:删除")
    private Integer delFlg;

    /** 创建用户ID */
    @Excel(name = "创建用户ID")
    private Long createUserid;

    /** 更新用户ID */
    @Excel(name = "更新用户ID")
    private Long updateUserid;

}
